//
//  MMWMiotLinkWebService.h
//  smartLibraryTest
//
//  Created by 雷琨 on 15/12/27.
//  Copyright © 2015年 miotlink. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <MobileCoreServices/MobileCoreServices.h>


@class mmwHTTPBaseWebService;

/**
 * mmwHTTPBaseWebService的成功回调，子类适用
 *
 * @param webService 具体的mmwHTTPBaseWebService请求
 * @param responseObject mmwHTTPBaseWebService的响应
 */
typedef void (^mmw_MiotLinkWebServiceSuccessBlock)(__kindof mmwHTTPBaseWebService *webService, id responseObject);

/**
 * mmwHTTPBaseWebService的失败回调，子类适用
 *
 * @param webService 具体的mmwHTTPBaseWebService请求
 * @param error mmwHTTPBaseWebService的失败信息
 */
typedef void (^mmw_MiotLinkWebServiceFailureBlock)(__kindof mmwHTTPBaseWebService *webService, NSError *error);

/*
 * 所有网络请求的基类
 */
@interface mmwHTTPBaseWebService : NSObject

/*
 * webService的host地址
 */
@property(nonatomic)NSString *host;

/**
 * 启动异步的http请求
 *
 * @param success 成功回调
 * @param failure 失败回调
 */
- (void)sendRequestWithSuccess:(mmw_MiotLinkWebServiceSuccessBlock)success
                       failure:(mmw_MiotLinkWebServiceFailureBlock)failure;

@end

#pragma mark - addObject


/*
 * sendPwdCode请求, 找回密码->发送验证码
 */
@interface mmwSendPwdCodeHTTPWebService : mmwHTTPBaseWebService

/*
 * 通过手机号来初始化
 */
- (instancetype)initWithPhone:(NSString *)phone;

@end

/*
 * validatePwdCode请求，找回密码->校验验证码
 */
@interface mmwValidatePwdCodeHTTPWebService : mmwHTTPBaseWebService

/**
 * 初始化方法
 *
 * @param phone 手机号
 * @param msg 验证码
 */
- (instancetype)initWithPhone:(NSString *)phone msg:(NSString *)msg;

@end

/*
 * addShareCu请求，设备分享->添加分享
 */
@interface mmwAddShareCuHTTPWebService : mmwHTTPBaseWebService

/**
 * 初始化方法
 *
 * @param ownerCuId 设备拥有着cuId
 * @param shareName 分享者名字
 */
- (instancetype)initWithOwnerCuId:(NSString *)ownerCuId shareName:(NSString *)shareName;

@end

/*
 * addFeedBack请求，意见反馈
 */
@interface mmwAddFeedBackHTTPWebService : mmwHTTPBaseWebService

/**
 * 初始化方法
 *
 * @param username 反馈者的username
 * @param content 反馈内容
 */
- (instancetype)initWithUsername:(NSString *)username content:(NSString *)content;

@end

/*
 * getPuByMac请求，设备配置->上传配置成功的设备到webService
 */
@interface mmwGetPuByMacHTTPWebService : mmwHTTPBaseWebService

/**
 * 初始化方法
 *
 * @param cuId 当前账号的cuId
 * @param macCode 设备mac地址
 * @param deviceName 设备名
 * @param deviceCode 设备11位数字标识，二维码结果
 * @param longitude 经度
 * @param latitude 维度
 * @param userdata 当前位置相关信息
 */
- (instancetype)initWithCuId:(NSString *)cuId
                     macCode:(NSString *)macCode
                  deviceName:(NSString *)deviceName
                  deviceCode:(NSString *)deviceCode
                   longitude:(NSString *)longitude
                    latitude:(NSString *)latitude
                    userdata:(NSString *)userdata;

@end

#pragma mark - deleteObject
/*
 * deleteShareCu请求，设备分享->删除分享
 */
@interface mmwDeleteShareCuHTTPWebService : mmwHTTPBaseWebService

/**
 * 初始化方法
 *
 * @param ownerCuId 设备拥有着cuId
 * @param shareCuIds 需要删除的分享者cuId数组
 */
- (instancetype)initWithOwnerCuId:(NSString *)ownerCuId shareCuIds:(NSArray<NSString *> *)shareCuIds;

@end

#pragma mark - getObject
/*
 * login请求，登陆请求
 */
@interface mmwLoginHTTPWebService : mmwHTTPBaseWebService

/**
 * 初始化方法
 *
 * @param username 用户名
 * @param password 密码
 */
- (instancetype)initWithUsername:(NSString *)username password:(NSString *)password;

@end

/*
 * findPuCounts请求，获取在线设备数
 */
@interface mmwFindPuCountsHTTPWebService : mmwHTTPBaseWebService

/**
 * 初始化方法
 *
 * @param cuId 当前账号的cuId
 */
- (instancetype)initWithCuId:(NSString *)cuId;

@end

/*
 * parseKindModel请求，通过11位2维码拿设备配置信息
 */
@interface mmwParseKindModelHTTPWebService : mmwHTTPBaseWebService

/**
 * 初始化方法
 *
 * @param code 设备11位数字标识，二维码结果
 */
- (instancetype)initWithCode:(NSString *)code;

@end

/*
 * getPuList请求，获取设备信息
 */
@interface mmwGetPuListHTTPWebService : mmwHTTPBaseWebService

/**
 * 初始化方法
 *
 * @param cuId 当前账号的cuId
 */
- (instancetype)initWithCuId:(NSString *)cuId;

@end

/*
 * getAllResourceConfig请求，获取相关配置信息
 */
@interface mmwGetAllResourceConfigHTTPWebService : mmwHTTPBaseWebService

/**
 * 初始化方法
 */
- (instancetype)initWithNoParam;

@end

/*
 * getShareCu请求，设备分享->获取分享设备列表
 */
@interface mmwGetShareCuHTTPWebService : mmwHTTPBaseWebService

/**
 * 初始化方法
 *
 * @param cuId 当前账号的cuId
 */
- (instancetype)initWithCuId:(NSString *)cuId;

@end

#pragma mark - updateObject
/*
 * updateCuPwd请求，修改密码
 */
@interface mmwUpdateCuPwdHTTPWebService : mmwHTTPBaseWebService

/**
 * 初始化方法
 *
 * @param name 用户名
 * @param password 新密码
 */
- (instancetype)initWithName:(NSString *)name password:(NSString *)password;

@end

/*
 * checkPluginUpdate请求，设备的附属信息，比如启动页和登陆页就是这个接口拿的
 */
@interface mmwCheckPluginUpdateHTTPWebService : mmwHTTPBaseWebService

/**
 * 初始化方法
 *
 * @param modelIds 设备的modelId数组。数据是从getPuList接口获得的modelId
 */
- (instancetype)initWithModelIds:(NSArray<NSNumber *> *)modelIds;

@end

#pragma mark - updateCu
/*
 * updateCu请求，注册账号
 */
@interface mmwUpdateCuHTTPWebService : mmwHTTPBaseWebService

/**
 * 初始化方法
 *
 * @param username 用户名
 * @param password 密码
 * @param nickName 昵称
 * @param mobile 手机号
 * @param code  验证码
 */
- (instancetype)initWithUsername:(NSString *)username
                        password:(NSString *)password
                        nickName:(NSString *)nickName
                          mobile:(NSString *)mobile
                            code:(NSString *)code;



@end

//获取注册码
@interface mmwGetUserRegistionCodeHTTPWebService : mmwHTTPBaseWebService

/**
 * 初始化方法
 *
 * @param username 用户名
 */
- (instancetype)initWithUsername:(NSString *)username;

@end

//用户注册

@interface mmwUserRegistrationHTTPWebService : mmwHTTPBaseWebService

/**
 * 初始化方法
 *
 * @param username 用户名
 */
- (instancetype)initWithUsername:(NSString *)username pwd:(NSString *)pwd code:(NSString *)code sign:(NSString *)sign;

@end

//更新密码

@interface mmwUpdatePwdHTTPWebService : mmwHTTPBaseWebService

/**
 * 初始化方法
 *
 * @param username 用户名
 */
- (instancetype)initWithUsername:(NSString *)username pwd:(NSString *)pwd sign:(NSString *)sign;

@end
